<?php defined('BASEPATH') OR exit('No direct script access allowed');

class Usuario extends CI_Controller {

	/* Layout utilizado pela pagina. */
	public $layout = 'default_admin';
	
	/* Titulo da Pagina. */
	public $title = CLIENTE;
	
	/* Menu do sistema*/
	public $menuTopo = '';
	
	/* Menu do sistema*/
	public $menuLateral = '';
	
	/* Caminho do pão do sistema */
	public $caminhoPao = '';
	
	/* css utilizado pela pagina. */
	public $css = array('admin/bootstrap', 'admin/animate', 'admin/style', 'plugins/waitMe/waitMe' );
	
	/* Js utilizado pela pagina. */
	public $js = array('plugins/jquery/jquery-2.1.4', 'admin/bootstrap', 'plugins/metisMenu/jquery.metisMenu', 'plugins/slimscroll/jquery.slimscroll.min', 'admin/principal', 'plugins/pace/pace.min', 'plugins/jquery-cookie/jquery.cookie', 'plugins/waitMe/waitMe');
	
	private $classe;
	
	public function __construct()
	{
		parent::__construct();
		//Verifica se o usuário está logado
		usuarioLogado($this->session->userdata('logged'));
		
		$this->load->model('Usuario_Model', 'usuario');
		$this->load->model('Senha_Model', 'senha');
		$this->load->model('Perfil_Model', 'perfil');
		$this->load->model('Pessoa_Model', 'pessoa');
		$this->load->model('Config_Email_Model', 'config_email');
		
		$this->classe = trim(strtolower(get_class($this)));	
		
		//Valida permissões do usuário
		$this->permissao_lib->validaUsuarioPermissaoAcessarModulo($this->classe);
		
		//Montando menu dinâmico
		$this->load->library('Menu_Lib', 'menu_lib');
		$this->menuTopo = $this->menu_lib->menuTopo();
		$this->menuLateral = $this->menu_lib->menuLateral($this->classe);
		
		include_once 'app/enum/EnumTipoSenha.php';
	}
	
	public function index()	{					
		try {
			
				//Limpando id da sessão
				$this->session->unset_userdata('idBancoTela');
				$this->caminhoPao = $this->menu_lib->caminhoPao($this->classe, null, null);
			
				array_push($this->js, 'plugins/select2/select2.min', 'plugins/jquery-mask/jquery.mask.min', 'plugins/formValidation/formValidation', 'plugins/framework/bootstrap', 'plugins/iCheck/icheck', 'plugins/dataTables/jquery.dataTables', 'plugins/dataTables/dataTables.bootstrap', 'plugins/dataTables/dataTables.responsive', 'admin/usuario/pesquisar_usuario');
				array_push($this->css, 'plugins/select2/select2', 'plugins/formValidation/formValidation', 'plugins/iCheck/custom', 'plugins/dataTables/dataTables.bootstrap', 'plugins/dataTables/dataTables.responsive');
				
				$tipoPerfil = decrypt(trim($this->session->userdata('tipoPerfil')));
				
				$perfis = $this->perfil->listarPerfisAtivos($tipoPerfil);
					
				$html = '<option></option>';
					
				foreach ($perfis as $row){
				
					$html .= '<option value="'.$row->idPerfil.'">'.$row->descricao.'</option>';
				}
				
				$data = null;
				$data["comboPerfil"] = $html;
				
				$this->load->view('admin/usuario/pesquisar_usuario', $data);
			
		}catch (Exception $e){
			echo ($e->getMessage());
		}
		
	}
	
	public function pesquisar(){
		try {
			
			$this->layout = "";
			
			//Limpando id da sessão
			$this->session->unset_userdata('idBancoTela');
			
			$retornoJson = false;
			$tipoMensagem = "";
			$mensagem = "";
			
			$html = "";
			
			$nome = trim($this->input->post('nome'));
			$login = trim($this->input->post('login'));
			$cpf = trim($this->input->post('cpf'));
			$idPerfil = trim($this->input->post('perfil'));
			
			$situacao = trim($this->input->post('situacao'));
			$situacao = empty($situacao) ? "A" : $situacao;
			
			$idUsuario = decrypt(trim($this->session->userdata('idUsuario')));
			$tipoPerfilLogin = decrypt(trim($this->session->userdata('tipoPerfil')));
			
			$retorno = $this->usuario->pesquisar($nome, $login, $cpf,  $idPerfil, $situacao, $tipoPerfilLogin);
			
			if (!empty($retorno)){
			
				$html = '	<table class="table table-bordered table-striped table-hover table-heading table-datatable" id="tabela_resultado">
								<thead class="head-table">
									<tr>
										<th>Exibir</th>
										<th>Nome</th>
										<th>Login</th>
										<th>Logado</th>
										<th>CPF</th>
										<th>Perfil</th>
										<th>Alterar</th>';
				
				if ($situacao === "A"){
					$html .= '<th>Inativar</th>';
				}else{
					$html .= '<th>Reativar</th>';
				}
										
				$html .= '		    </tr>
								</thead>
								<tbody>';
			
				foreach ($retorno as $row){
						
					$logado = $row->logged === "T" ? "Sim" : "Não";
					
					$html .= '<tr>
								<td><i class="fa fa-file-o icone-pesquisa" onclick="telaExibir(\''.encrypt(trim($row->idUsuario)).'\');" style="cursor: pointer;"></i></td>
								<td>'.$row->nome.'</td>
								<td>'.$row->login.'</td>
								<td>'.$logado.'</td>
								<td>'.$row->cpf.'</td>
								<td>'.$row->descricao.'</td>';
						
					if ($situacao === "A"){
						$html .= '<td><i class="fa fa-edit icone-pesquisa" onclick="telaAlterar(\''.encrypt(trim($row->idUsuario)).'\');" style="cursor: pointer;"></i></td>';
						
						if((int)$idUsuario === (int)$row->idUsuario){
							$html .= '<td><i class="fa fa-trash-o icone-pesquisa" data-toggle="tooltip" data-placement="bottom" data-original-title="Não é possível inativar seu próprio usuário!" style="cursor: pointer;"></i></td>';
						}else{
							$html .= '<td><i class="fa fa-trash-o icone-pesquisa" onclick="mostraModal(\''.encrypt(trim($row->idUsuario)).'\', \''.$row->nome.'\', \'I\');" style="cursor: pointer;"></i></td>';
						}
					}else{
						$html .= '<td><i class="fa fa-edit icone-pesquisa" data-toggle="tooltip" data-placement="bottom" data-original-title="Registro está inativo!" style="cursor: pointer;"></i></td>';
						$html .= '<td><i class="fa fa-unlock icone-pesquisa" onclick="mostraModal(\''.encrypt(trim($row->idUsuario)).'\', \''.$row->nome.'\', \'R\');" style="cursor: pointer;"></i></td>';
					}
			
					$html .='</tr>';
				}
			
				$html .=    '</tbody>
						  </table>';
			
				$retornoJson = true;
			
			}else{
				//Não encontrou resultados
				$retornoJson = false;
				$tipoMensagem = "alert-info";
				$mensagem = "Sua pesquisa não retornou resultado!";
			}
			
			$json = null;
			$json['sucesso'] = $retornoJson;
			$json['tipoMensagem'] = $tipoMensagem;
			$json['mensagem'] = $mensagem;
			$json['html'] = $html;
			
			echo json_encode($json);
						
		}catch (Exception $e){
			$json['sucesso'] = false;
			$json['tipoMensagem'] = "alert-danger";
			$json['mensagem'] = $e->getMessage();
			
			echo json_encode($json);
		}
	}
	
	public function telaCadastrar(){
		try {
			
			//Limpando id da sessão
			$this->session->unset_userdata('idBancoTela');
			$this->caminhoPao = $this->menu_lib->caminhoPao($this->classe, null, "Cadastrar Usuário");
	
			array_push($this->js, 'plugins/select2/select2.min', 'plugins/datapicker/bootstrap-datepicker', 'plugins/jquery-mask/jquery.mask.min','plugins/formValidation/formValidation', 'plugins/framework/bootstrap', 'admin/usuario/cadastrar_usuario');
			array_push($this->css, 'plugins/select2/select2', 'plugins/datapicker/datepicker3', 'plugins/formValidation/formValidation');
				
			$tipoPerfil = decrypt(trim($this->session->userdata('tipoPerfil')));
				
			$perfis = $this->perfil->listarPerfisAtivos($tipoPerfil);
				
			$html = '<option></option>';
				
			foreach ($perfis as $row){
			
				$html .= '<option value="'.$row->idPerfil.'">'.$row->descricao.'</option>';
			}
				
			$data = null;
			$data["comboPerfil"] = $html;
			
			$this->load->view('admin/usuario/cadastrar_usuario', $data);
	
		}catch (Exception $e){
			echo ($e->getMessage());
		}
	}
	
	public function salvar(){
		
		try {
			
			$this->layout = "";
			
			$this->util_lib->validaPermissaoRegistro("telaCadastrar", $this->classe);
			
			$retornoJson = false;
			$tipoMensagem = "";
			$mensagem = "";
				
			//Pegando dados do form
			$nome = trim($this->input->post('nome'));
			$dtNascimento = gravaData(trim($this->input->post('dataNascimento')));
			$cpf = trim($this->input->post('cpf'));
			$telefone = trim($this->input->post('telefone'));
			$celular = trim($this->input->post('celular'));
			$login = trim($this->input->post('login'));
			$email = trim($this->input->post('email'));
			$idPerfil = trim($this->input->post('perfil'));
			
			$idUsuario = decrypt(trim($this->session->userdata('idUsuario')));
			
			$usuario = null;
			$usuario['idPerfil'] = $idPerfil;
			$usuario['login'] = $login;
			$usuario['email'] = $email;
			$usuario['ip'] = "0.0.0.0";
			$usuario['logged'] = "F";
			$usuario['idUsuarioCadastro'] = $idUsuario;
			$usuario['dtCadastro'] = date("Y-m-d H:i:s");
			$usuario['idUsuarioUltimaAlteracao'] = $idUsuario;
			$usuario['dtUltimaAlteracao'] = date("Y-m-d H:i:s");
			$usuario['dtVigenciaIni'] = date("Y-m-d H:i:s");
			$usuario['dtVigenciaFim'] = null;
			
			//Iniciando transação
			$this->db->trans_begin();
			
			$idUsuario = $this->usuario->inserir($usuario);
			
			if (!empty($idUsuario) && $idUsuario != false){
				
				$senha = null;
				$senha['idUsuario'] = $idUsuario;
				$senha['senha'] = md5 ( SENHA_DEFAULT );
				$senha['dtVigenciaIni'] = date("Y-m-d H:i:s");
				$senha['dtVigenciaFim'] = null;
				$senha['tipoSenha'] = EnumTipoSenha::getCodigo(EnumTipoSenha::CADASTRO);
				
				$idSenha = $this->senha->inserir($senha);
					
				//Se inseriu a nova senha
				if (!empty($idSenha) && $idSenha != false){

					$pessoa = null;
					$pessoa['idUsuario'] = $idUsuario;
					$pessoa['nome'] = $nome;
					$pessoa['dtNascimento'] = $dtNascimento;
					$pessoa['cpf'] = $cpf;
					$pessoa['telefone'] = $telefone;
					$pessoa['celular'] = $celular;
					
					$pessoa['idUsuarioCadastro'] = $idUsuario;
					$pessoa['dtCadastro'] = date("Y-m-d H:i:s");
					$pessoa['idUsuarioUltimaAlteracao'] = $idUsuario;
					$pessoa['dtUltimaAlteracao'] = date("Y-m-d H:i:s");
					$pessoa['dtVigenciaIni'] = date("Y-m-d H:i:s");
					$pessoa['dtVigenciaFim'] = null;
					
					$idPessoa = $this->pessoa->inserir($pessoa);
					
					if (!empty($idPessoa) && $idPessoa != false){
						$retornoJson = true;
						$tipoMensagem = "alert-success";
						$mensagem = "Usuário Cadastrado com sucesso!";
					}
				}
				
			}
			
			$this->enviaEmail($email, SENHA_DEFAULT, $login);
							
			if ($retornoJson){
				$this->db->trans_commit();
			}else{
				$this->db->trans_rollback();
			}
			
			$json = null;
			$json['sucesso'] = $retornoJson;
			$json['tipoMensagem'] = $tipoMensagem;
			$json['mensagem'] = $mensagem;
			
			echo json_encode($json);
			
		} catch (Exception $e) {
			$this->db->trans_rollback();
			
			$json['sucesso'] = false;
			$json['tipoMensagem'] = "alert-danger";
			$json['mensagem'] = $e->getMessage();
			
			echo json_encode($json);
		}
		
	}
	
	public function telaExibir(){
		try {
			
			//Limpando id da sessão
			$this->session->unset_userdata('idBancoTela');
			$this->caminhoPao = $this->menu_lib->caminhoPao($this->classe, null, "Exibir Usuário");
				
			array_push($this->js, 'admin/usuario/exibir_usuario');
			
			$id = decrypt(trim($this->input->get("id")));
				
			$usuario = $this->usuario->obter($id);
			
			$data = null;
			$data['nome'] = $usuario->nome;
			$data['dtNascimento'] = mostraData($usuario->dtNascimento);
			$data['cpf'] = $usuario->cpf;
			$data['telefone'] = $usuario->telefone;
			$data['celular'] = $usuario->celular;
			
			$data['login'] = $usuario->login;
			$data['email'] = $usuario->email;
			$data['perfil'] = $usuario->descricao;
			
			$data['dtCadastro'] = mostraData($usuario->dtCadastro);
			$data['dtFim'] = mostraData($usuario->dtVigenciaFim);
			
			$this->load->view('admin/usuario/exibir_usuario', $data);
				
	
		}catch (Exception $e){
			echo ($e->getMessage());
		}
	}
	
	public function telaAlterar(){
		try {
			
			$this->session->set_userdata('idBancoTela', trim($this->input->get("id")));
			$this->caminhoPao = $this->menu_lib->caminhoPao($this->classe, null, "Alterar Usuário");
	
			array_push($this->js, 'plugins/select2/select2.min', 'plugins/datapicker/bootstrap-datepicker', 'plugins/jquery-mask/jquery.mask.min', 'plugins/formValidation/formValidation', 'plugins/framework/bootstrap', 'admin/usuario/alterar_usuario');
			array_push($this->css, 'plugins/select2/select2', 'plugins/datapicker/datepicker3', 'plugins/formValidation/formValidation');
			
			$id = decrypt(trim($this->input->get("id")));
			
			$usuario = $this->usuario->obter($id);
			
			$data = null;
			$data['nome'] = $usuario->nome;
			$data['dtNascimento'] = mostraData($usuario->dtNascimento);
			$data['cpf'] = $usuario->cpf;
			$data['telefone'] = $usuario->telefone;
			$data['celular'] = $usuario->celular;
			
			$data['login'] = $usuario->login;
			$data['email'] = $usuario->email;
			
			$idUsuario = decrypt(trim($this->session->userdata('idUsuario')));
			$tipoPerfil = decrypt(trim($this->session->userdata('tipoPerfil')));
			
			$perfis = $this->perfil->listarPerfisAtivos($tipoPerfil);
			
			$desabilita = ((int)$idUsuario === (int)$usuario->idUsuario) ? "disabled='disabled'" : "";
				
			$html = '<div class="form-group">
						<label class="col-lg-2 control-label">Perfil:</label>
						<div class="col-lg-4">
							<select class="populate placeholder" name="perfil" id="perfil" '.$desabilita.'>
								<option></option>';
				
			foreach ($perfis as $row){
				
				$selected = ((int)$row->idPerfil === (int)$usuario->idPerfil) ? 'selected="selected"' : "";
			
				$html .= '<option '.$selected.' value="'.$row->idPerfil.'">'.$row->descricao.'</option>';
			}
				
			$html .= '		</select>
						</div>
					</div>';
			
			$data["comboPerfil"] = $html;
	
			$this->load->view('admin/usuario/alterar_usuario', $data);
	
		}catch (Exception $e){
			echo ($e->getMessage());
		}
	}
	
	public function alterar(){
	
		try {
				
			$this->layout = "";
			
			$this->util_lib->validaPermissaoRegistro("telaAlterar", $this->classe);
			
			$retornoJson = false;
			$tipoMensagem = ""; 
			$mensagem = "";
			
			//Usuário Logado
			$idUsuarioLogado = decrypt(trim($this->session->userdata('idUsuario')));
	
			//Pegando dados do form
			$idUsuario = decrypt(trim($this->session->userdata('idBancoTela')));
			$nome = trim($this->input->post('nome'));
			$dtNascimento = gravaData(trim($this->input->post('dataNascimento')));
			$cpf = trim($this->input->post('cpf'));
			$telefone = trim($this->input->post('telefone'));
			$celular = trim($this->input->post('celular'));
			$login = trim($this->input->post('login'));
			$email = trim($this->input->post('email'));
			
			$usuario = null;
			
			if ((int)$idUsuarioLogado !== (int)$idUsuario){
				$idPerfil = trim($this->input->post('perfil'));
				$usuario['idPerfil'] = $idPerfil;
			}
			
			$usuario['login'] = $login;
			$usuario['email'] = $email;
			$usuario['idUsuarioUltimaAlteracao'] = $idUsuarioLogado;
			$usuario['dtUltimaAlteracao'] = date("Y-m-d H:i:s");
				
			//Iniciando transação
			$this->db->trans_begin();
				
			if ($this->usuario->alterar($usuario, $idUsuario)){
				
				$dados = $this->pessoa->obterPessoaAtivaPorUsuario($idUsuario);
				
				$pessoa = null;
				$pessoa['idUsuario'] = $idUsuario;
				$pessoa['nome'] = $nome;
				$pessoa['dtNascimento'] = $dtNascimento;
				$pessoa['cpf'] = $cpf;
				$pessoa['telefone'] = $telefone;
				$pessoa['celular'] = $celular;
				
				$pessoa['idUsuarioUltimaAlteracao'] = $idUsuarioLogado;
				$pessoa['dtUltimaAlteracao'] = date("Y-m-d H:i:s");
				
				if (!empty($dados->idPessoa)){
					if ($this->pessoa->alterar($pessoa, $dados->idPessoa)){
						$retornoJson = true;
						$tipoMensagem = "alert-success";
						$mensagem = "Usuário alterado com sucesso!";
					}
				}else{
					$pessoa['idUsuarioCadastro'] = $idUsuarioLogado;
					$pessoa['dtCadastro'] = date("Y-m-d H:i:s");
					$pessoa['dtVigenciaIni'] = date("Y-m-d H:i:s");
					$pessoa['dtVigenciaFim'] = null;
					
					$idPessoa = $this->pessoa->inserir($pessoa);
					
					if (!empty($idPessoa) && $idPessoa != false){
						$retornoJson = true;
						$tipoMensagem = "alert-success";
						$mensagem = "Usuário alterado com sucesso!";
					}
				}
				
			}
				
			if ($retornoJson){
				$this->db->trans_commit();
			}else{
				$this->db->trans_rollback();
			}
				
			$json = null;
			$json['sucesso'] = $retornoJson;
			$json['tipoMensagem'] = $tipoMensagem;
			$json['mensagem'] = $mensagem;
			
			echo json_encode($json);
				
		} catch (Exception $e) {
			$this->db->trans_rollback();
			
			$json['sucesso'] = false;
			$json['tipoMensagem'] = "alert-danger";
			$json['mensagem'] = $e->getMessage();
			
			echo json_encode($json);
		}
	
	}
	
	public function reativar(){
	
		try {
	
			$this->layout = "";
			
			//Limpando id da sessão
			$this->session->unset_userdata('idBancoTela');
			
			$this->util_lib->validaPermissaoRegistro("reativar", $this->classe);
				
			$retornoJson = false;
			$tipoMensagem = "";
			$mensagem = "";
	
			//Pegando dados do form
			$id = decrypt(trim($this->input->post("idBanco")));
			$idPerfil = trim($this->input->post("perfilAtivo"));
			
			//Usuário Logado
			$idUsuario = decrypt(trim($this->session->userdata('idUsuario')));
	
			$usuario = null;
			
			if($this->perfil->validaUsuarioComPerfilInativo($id)){
				if (empty($idPerfil)){
					throw new Exception('Informe um perfil para reativar o usuário!');
				}else{
					$usuario['idPerfil'] = $idPerfil;
				}
			}
			
			$usuario['logged'] = 'F';
			$usuario['idUsuarioUltimaAlteracao'] = $idUsuario;
			$usuario['dtUltimaAlteracao'] = date("Y-m-d H:i:s");
			$usuario['dtVigenciaFim'] = null;
	
			//Iniciando transação
			$this->db->trans_begin();
	
			if ($this->usuario->alterar($usuario, $id)){
				
				$retornoJson = true;
				$tipoMensagem = "alert-success";
				$mensagem = "Usuário reativado com sucesso!";
				$dados = $this->pessoa->obterPessoaPorUsuario($id);
				
				if (!empty($dados->idPessoa)){
					$pessoa = null;
					$pessoa['idUsuarioUltimaAlteracao'] = $idUsuario;
					$pessoa['dtUltimaAlteracao'] = date("Y-m-d H:i:s");
					$pessoa['dtVigenciaFim'] = null;
					
					$this->pessoa->alterar($pessoa, $dados->idPessoa);
				}else{
					throw new Exception('Ocorreu um erro ao obter o usuário!');
				}
				
			}
	
			if ($retornoJson){
				$this->db->trans_commit();
			}else{
				$this->db->trans_rollback();
			}
	
			$json = null;
			$json['sucesso'] = $retornoJson;
			$json['tipoMensagem'] = $tipoMensagem;
			$json['mensagem'] = $mensagem;
			
			echo json_encode($json);
	
		} catch (Exception $e) {
			$this->db->trans_rollback();
			
			$json['sucesso'] = false;
			$json['tipoMensagem'] = "alert-danger";
			$json['mensagem'] = $e->getMessage();
			
			echo json_encode($json);
		}
	
	}
	
	public function inativar(){
	
		try {
	
			$this->layout = "";
			
			//Limpando id da sessão
			$this->session->unset_userdata('idBancoTela');
			
			$this->util_lib->validaPermissaoRegistro("inativar", $this->classe);
				
			$retornoJson = false;
			$tipoMensagem = "";
			$mensagem = "";
	
			//Pegando dados do form
			$id = decrypt(trim($this->input->post("idBanco")));
	
			//Usuário Logado
			$idUsuario = decrypt(trim($this->session->userdata('idUsuario')));
	
			$usuario = null;
			$usuario['logged'] = 'F';
			$usuario['idUsuarioUltimaAlteracao'] = $idUsuario;
			$usuario['dtUltimaAlteracao'] = date("Y-m-d H:i:s");
			$usuario['dtVigenciaFim'] = date("Y-m-d H:i:s");
	
			//Iniciando transação
			$this->db->trans_begin();
			
			if ($this->usuario->alterar($usuario, $id)){
				
				$retornoJson = true;
				$tipoMensagem = "alert-success";
				$mensagem = "Usuário inativado com sucesso!";
				
				$dados = $this->pessoa->obterPessoaAtivaPorUsuario($id);
				
				if (!empty($dados->idPessoa)){
					$pessoa = null;
					$pessoa['idUsuarioUltimaAlteracao'] = $idUsuario;
					$pessoa['dtUltimaAlteracao'] = date("Y-m-d H:i:s");
					$pessoa['dtVigenciaFim'] = date("Y-m-d H:i:s");
					
					$this->pessoa->alterar($pessoa, $dados->idPessoa);
					
				}else{
					throw new Exception('Ocorreu um erro ao obter o usuário!');
				}
				
			}else{
				throw new Exception('Ocorreu um erro ao inativar o usuário!');
			}
	
			if ($retornoJson){
				$this->db->trans_commit();
			}else{
				$this->db->trans_rollback();
			}
	
			$json = null;
			$json['sucesso'] = $retornoJson;
			$json['tipoMensagem'] = $tipoMensagem;
			$json['mensagem'] = $mensagem;
			
			echo json_encode($json);
	
		} catch (Exception $e) {
			$this->db->trans_rollback();
			
			$json['sucesso'] = false;
			$json['tipoMensagem'] = "alert-danger";
			$json['mensagem'] = $e->getMessage();
			
			echo json_encode($json);
		}
	
	}
	
	public function validaCpfDisponivel(){
		try{
				
			$this->layout = "";
				
			$retornoJson = false;
				
			$cpf = trim($this->input->post('cpf'));
			$idUsuario = decrypt(trim($this->session->userdata('idBancoTela')));
				
			$pessoa = $this->pessoa->obterPessoaPorCpf($cpf, $idUsuario);
				
			if (!empty($pessoa)){
				$retornoJson = false;
			}else{
				$retornoJson = true;
			}
				
			$json = null;
			$json['valid'] = $retornoJson;
	
			echo json_encode($json);
				
		}catch (Exception $e){
			echo ($e->getMessage());
		}
	}
	
	public function validaLoginDisponivel(){
		try{
	
			$this->layout = "";
	
			$retornoJson = false;
	
			$login = trim($this->input->post('login'));
			$idUsuario = decrypt(trim($this->session->userdata('idBancoTela')));
	
			$usuario = $this->usuario->obterUsuarioPorLogin($login, $idUsuario);
	
			if (!empty($usuario)){
				$retornoJson = false;
			}else{
				$retornoJson = true;
			}
	
			$json = null;
			$json['valid'] = $retornoJson;
	
			echo json_encode($json);
	
		}catch (Exception $e){
			echo ($e->getMessage());
		}
	}
	
	public function validaEmailDisponivel(){
		try{
	
			$this->layout = "";
	
			$retornoJson = false;
	
			$email = trim($this->input->post('email'));
			$idUsuario = decrypt(trim($this->session->userdata('idBancoTela')));
	
			$usuario = $this->usuario->obterUsuarioPorEmail($email, $idUsuario);
	
			if (!empty($usuario)){
				$retornoJson = false;
			}else{
				$retornoJson = true;
			}
	
			$json = null;
			$json['valid'] = $retornoJson;
	
			echo json_encode($json);
	
		}catch (Exception $e){
			echo ($e->getMessage());
		}
	}
	
	public function buscaPerfisAtivos(){
	
		try {
	
			$this->layout = "";
				
			//Limpando id da sessão
			$this->session->unset_userdata('idBancoTela');
	
			$retornoJson = false;
			$perfilInativo = false;
			$html = "";
			
			//Pegando dados do form
			$idUsuario = decrypt(trim($this->input->post('idUsuario')));
			
			if($this->perfil->validaUsuarioComPerfilInativo($idUsuario)){
				
				$html .= '<p>O usuário "{texto}", está vinculado a um perfil inativo, para reativar informe outro perfil.</p>';
				
				$perfilInativo = true;
				
				$tipoPerfil = decrypt(trim($this->session->userdata('tipoPerfil')));
				
				$perfis = $this->perfil->listarPerfisAtivos($tipoPerfil);
												
				$html .= '<div class="form-group">
							<label class="col-lg-2 control-label">Perfil:</label>
							<div class="col-lg-8">
								<select class="populate placeholder" name="perfilAtivo" id="perfilAtivo">
									<option></option>';
				
				foreach ($perfis as $row){
						
					$html .= '<option value="'.$row->idPerfil.'">'.$row->descricao.'</option>';
				}
				
				$html .= '		</select>
							</div>
						</div>';
				
			}else{
				$html .= '<p>Deseja realmente reativar o usuário "{texto}" ?</p>';
			}
			
			$retornoJson = true;
	
			$json = null;
			$json['sucesso'] = $retornoJson;
			$json['perfilInativo'] = $perfilInativo;
			$json['html'] = $html;
				
			echo json_encode($json);
	
		} catch (Exception $e) {
			$json['sucesso'] = false;
			$json['tipoMensagem'] = "alert-danger";
			$json['mensagem'] = $e->getMessage();
			$json['html'] = '<p>Deseja realmente reativar o usuário "{texto}" ?</p>';
				
			echo json_encode($json);
		}
	
	}
	
	// Envio de email codegninter
	private function enviaEmail($email, $senha, $login) {
		try {
				
			$retorno = 0;
				
			$configEmail = $this->config_email->obter();
				
			if (!empty($configEmail)){
				$config = Array (
						'protocol' => $configEmail->protocol,
						'smtp_host' => $configEmail->smtpHost,
						'smtp_port' => $configEmail->smtpPort,
						'smtp_user' => $configEmail->smtpUser,
						'smtp_pass' => $configEmail->smtpPass,
						'smtp_timeout' => $configEmail->smtpTimeout,
						'mailtype' => $configEmail->mailtype,
						'charset' => $configEmail->charset
						);
	
				$this->load->library ( 'email', $config );
				$this->email->set_newline ( "\r\n" );
	
				$this->email->from ( $configEmail->fromEmail, $configEmail->fromDescricao );
				$this->email->to ( $email );
	
				$assunto = "Usuário Novo - Valt Soluções em TI";
				$this->email->subject ( $assunto );
	
				$corpo = '<div style="width: 900px">
							<div>
								<div>
									<img src="' . base_url () . 'www/images/email/head_email.png">
								</div>
							</div>
							<div style="margin-top: 25px; margin-bottom: 25px; font-size: 15px;">
								  Sua senha para acessar ao Valt Soluções em TI foi criada com sucesso!<br><br>
	
								  <span style="font-weight: bold;">Login:</span> ' . $login . '<br>
							 	  <span style="font-weight: bold;">Senha:</span> ' . $senha . '<br><br>
							 	  		
							 	  <a href="http://localhost/valt/admin" target="_blank">Valt Soluções em TI</a>
							 	  		
							</div>
						 	<div>
								<div>
									<img src="' . base_url () . 'www/images/email/footer_email.png">
								</div>
							</div>
						  </div>';
	
				$this->email->message ( $corpo );
	
				$retorno = $this->email->send (FALSE);
	
			}
				
			if ((int)$retorno === 1) {
				return true;
			} else {
				return false;
				//echo $this->email->print_debugger();
			}
		} catch ( Exception $e ) {
			throw $e;
		}
	}
}